/**
 * axios的二次封装
 * 1. 配置基础路径和超时时间
 *2. 显示请求加载进度
 *3. 自动携带token请求头
 *4. 请求成功返回响应体数据
 *5. 请求失败提示错误
 *6. 401错误时, 自动跳转到登陆页面
 */
import axios from 'axios'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import {
    getToken,
    removeToken,
    removeUser
} from '../utils/storageUtils'

const server = axios.create({
    baseURL: 'http://zsjyyds.online:90',
    timeout: 20000
})

// 请求拦截器
server.interceptors.request.use(config => {
    NProgress.start()
    const token = getToken()
    if (token) {
        config.headers['token'] = token
    }
    return config
})

// 响应拦截器
server.interceptors.response.use(
    response => {
        NProgress.done()
        return response.data
    },
    error => {
        NProgress.done()
        if (error.response.status == '401') {
            removeToken()
            removeUser()
            window.location = '/login.html'
        }
        throw error
    }
)

export default server